package com.xyy.saas.payment.cores.vo;

import com.xyy.saas.payment.cores.enums.BusinessOrderTypeEnum;
import com.xyy.saas.payment.cores.enums.ChannelEnum;
import com.xyy.saas.payment.cores.enums.InvokerEnum;

import java.io.Serializable;

/**
 * @author wangtianqi
 * @date 2019/12/17 19:31
 */
public class OrderRefundClearingVo implements Serializable {
    private static final long serialVersionUID = 8131979345976152378L;

    /**
     * 支付单号
     */
    private String payNo;
    /**
     * 支付渠道 （此处为了保证 订单 + 支付渠道 对应的支付单唯一）
     */
    private ChannelEnum payChannel;
    /**
     * 退清分方 参数格式 ： List<OrderClearingUserVo> 转 JSON
     * OrderRoyaltyUserVo包含两个参数： "clearingUser" 、"businessIdType" 、"amount" ; 用于指定退清分方 、退清分用户来源 和 退清分金额。把这些OrderClearingUserVo放进一个list内，然后转成json（参与签名）
     * 上述 amount 不可大于等于 0
     * 退手续费为 上面参数里的 所有的 amount 相加 然后 乘以 渠道手续费率 然后向下取整
     *
     * 如果一直部分退款，会与微信 有一点点手续费的计算差额
     *
     * 退清分内 传入的 退清分总金额 要与 所有 未参与退清分的退款单的总金额 相等
     */
    private String refundClearingJson;
    /**
     * 业务方需要退的佣金 此处refundCommission > 0
     */
    private Integer refundCommission;
    /**
     *接口调用方的标识，支付平台分配，用于验签
     */
    private InvokerEnum invoker;
    /**
     * 接口调用方的业务订单类型, 支付平台分配
     */
    private BusinessOrderTypeEnum businessOrderType;

    public String getPayNo() {
        return payNo;
    }

    public void setPayNo(String payNo) {
        this.payNo = payNo;
    }

    public ChannelEnum getPayChannel() {
        return payChannel;
    }

    public void setPayChannel(ChannelEnum payChannel) {
        this.payChannel = payChannel;
    }

    public String getRefundClearingJson() {
        return refundClearingJson;
    }

    public void setRefundClearingJson(String refundClearingJson) {
        this.refundClearingJson = refundClearingJson;
    }

    public InvokerEnum getInvoker() {
        return invoker;
    }

    public void setInvoker(InvokerEnum invoker) {
        this.invoker = invoker;
    }

    public BusinessOrderTypeEnum getBusinessOrderType() {
        return businessOrderType;
    }

    public void setBusinessOrderType(BusinessOrderTypeEnum businessOrderType) {
        this.businessOrderType = businessOrderType;
    }

    public Integer getRefundCommission() {
        return refundCommission;
    }

    public void setRefundCommission(Integer refundCommission) {
        this.refundCommission = refundCommission;
    }

}
